#ifndef LISTA_H_INCLUDED
#define LISTA_H_INCLUDED

#include <stdio.h>


typedef struct ent_1{
    int entero;
    ent_1 * sig;
}ent;

typedef ent *lista;



void crearLista(lista &L);
bool listaEsVacia(lista L);
int primerNodoLista(lista L);
void restoLista(lista &L);
void insFrontLista(lista &L, int num);
void insBackLista(lista &L, int num);
void desplegarLista(lista L);
bool perteneceRLista(lista L, int num);      //Me quede con la recursiva
int largoLista(lista L);
lista copiarLista(lista L);  //puedo retornarla en vez de pasarla como parametro
void eliminarLista(lista &L);
void borrarElementoLista(lista &L, int num);



//--------------------------------------
bool Pertenece(lista L, int num);

void IngresaListaBack(lista &L);

void EliminarTodos(lista &L);

void Interseccion(lista L1, lista L2, lista &Inter);

void Sustituir(lista L, int asust, int num);

long int SumaPares(lista L);

int MinimoR(lista L);
int NesimoR(lista L, int num);


void TomarR(lista L, int &num, lista &LN);
void Tomar(lista L, int num, lista &LN);

bool Iguales(lista L, lista L2);
bool IgualesR(lista L, lista L2);


void BorrarR(lista &L, int num);


#endif // LISTA_H_INCLUDED
